1
貪婪與懶惰:集合處理中的策略選擇
AI019Lesson 5
00:00

在 Elixir 中,資料處理遵循兩種截然不同的哲學: 貪婪 (積極主動)以及 懶惰。理解這兩者的取捨對記憶體效率和系統穩定性至關重要。

1. 可遍歷協議

技術上來說,可以被迭代的物件被稱為實作了 可遍歷協議。這個通用契約允許各種資料結構使用相同的函數集。

2. 貪婪模組與懶惰模組

其中 Enum 模組是 貪婪。它可能立即消耗整個集合的所有內容,在每一個管道步驟中創建中間列表。相反地, Stream 模組是 懶惰。下一個值僅在需要時才會計算 才會被計算。

Enum(貪婪)載入整個 10GB 檔案→ 崩潰(記憶體不足)Stream(懶惰)逐行讀取→ 安全且可組合

3. 規格與結果之別

一個 Stream 值 是我們意圖的規格,而非實際結果。Streams 具備可遍歷性和可組合性,讓您能層疊轉換操作,直到將 Stream 傳遞給「積極」的終點(如 Enum.to_list/1.

4. 理念純粹性

混合不同範型(函數式與物件導向)會削弱函數式方法帶來的好處。建議以宣告式轉換取代命令式迴圈,以提升可預測性。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>